#ifndef SCAN_OPERATION_NODE_H
#define SCAN_OPERATION_NODE_H

#include "OperationNode.h"
#include "SharedArray.h"
#include "types.h"

class Server;
class Column;

class ScanOperationNode: public OperationNode {
	public:
		// Doesn't take ownership of server.
		ScanOperationNode(const SharedArray<Type>& types, const SharedArray<int>& columns, Server* server);

		// Reads input data from server and returns it. Caller has ownership of memory.
		virtual SharedArray<Column> pull();

	private:
		SharedArray<Type> _types;
		SharedArray<int> _columns;
		Server* _server;
};

#endif
